package com.lhc.service.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface BaseCacheService {

	/**
	 * 
	 * @desc 批量删除缓存中key，支持模糊删除（需加*）
	 * @author qiliangxi
	 * @date 2016年9月13日下午2:30:14
	 *
	 * @param key
	 */
	public void batchDelete(String key) ;
	
	public void set(String key, String value) ;

	public String get(String key) ;

	public void append(String key, String value) ;

	public void del(String key) ;

	public void expire(String key, long seconds) ;
	/**
	 * 获取过期时间
	 */
	public Long ttl(String key) ;
	/**
	 * 右侧插入list，列表追加
	 * @param key
	 * @param list
	 * @return
	 */
	public <T> long rPush(String key , List<T> list);
	
	/**
	 * 获取
	 * @param key
	 * @param index
	 * @return
	 */
	public <T> T lindex(String key , long index);
	/**
	 * 获取list集合中的连续某几项
	 * @return
	 */
	public <T> List<T> lRange(String key, long start,long end); 
	/**
	 * 保留list区间
	 * @param key
	 * @param start
	 * @param end
	 */
	public void lTrim(String key,long start,long end);
	/**
	 * 替换列表
	 * @param key
	 * @param list
	 * @return
	 */
	public <T>void setList(String key , List<T> list);
	
	/**
	 * 设置map缓存
	 * @param key
	 * @param map
	 * @author libeibei
	 */
	public void setHmap(String key,Map<String,Object>map);
	
	/**
	 * 获取map缓存
	 * @param key
	 * @return
	 * @author libeibei
	 */
	public Map<String,Object>getHmap(String key);
	/**
	 * 设置map缓存
	 * @param key
	 * @param map
	 * @author libeibei
	 */
	public void setHmapNotToken(String key,Map<String,Object>map);
	
	/**
	 * 获取map缓存
	 * @param key
	 * @return
	 * @author libeibei
	 */
	public Map<String,Object>getHmapNotToken(String key);
	/**
	 * 取消token失效时间
	 * @param key
	 * @return
	 * @author wangxf
	 */
	public void setPersist(String key);
	
	/**
	 * 判断是否失效
	 * @param key
	 * @return 
	 */
	public boolean isExist(String key);

	/**
	 * 
	 * 方法描述:实现并发 成功返回1 失败返回0
	 * 修改备注：
	 * @version 1.0
	 * @param key
	 * @param value
	 * @return
	 * 返回类型： long
	 * 创建人： wangxinguang
	 * 创建时间: 2015年11月25日 上午9:45:33
	 */
	public long jedisSetNx(String key, String value);

	/**
	 * 
	 * 方法描述:
	 * 修改备注：
	 * @version 1.0
	 * @param key
	 * @param value
	 * @return
	 * 返回类型： long
	 * 创建人： wangxinguang
	 * 创建时间: 2015年11月25日 上午9:49:22
	 */
	public long jedisDel(String key);
	
	/**
	 * 设置有效时间
	 * @param key
	 * @param seconds
	 */
	public void jedisExpire(String key, int seconds);
	
	/**
	 * 
	 * 方法业务描述：用jedis设置key
	 * 使用须知或限制：
	 * 创建人：wxg
	 * 创建时间： 2016年4月19日
	 * 修改人：
	 * 修改时间：
	 * @param key
	 * @param value
	 * void
	 */
	public void jedisSet(String key, String value);
	
	/**
	 * 
	 * 方法业务描述：用jedis获取值
	 * 使用须知或限制：
	 * 创建人：wxg
	 * 创建时间： 2016年4月19日
	 * 修改人：
	 * 修改时间：
	 * @param key
	 * void
	 */
	public String jedisGet(String key);
	
	/**
	 * 
	 * 方法业务描述：jedis 查找key
	 * 使用须知或限制：
	 * 创建人：wxg
	 * 创建时间： 2016年4月19日
	 * 修改人：
	 * 修改时间：
	 * @param key
	 * void
	 */
	public Set<String> jedisKeys(String pattern);
	
}
